package cn.edu.hqu.cst.android.thirdexperiment;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.Timer;
import java.util.TimerTask;

import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity
    implements View.OnClickListener
{
    //////////////////////////进度条//////////////////////////////////////////
    final int PROGRESS_DIALOG = 0x123;
    private int[] data = new int[100];
    int progressStatus = 0;
    int hasData = 0;
    ProgressDialog pd;
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg){
            if(msg.what == 0x123)
            {
                pd.setProgress(progressStatus);
            }
        }
    };
    ////////////////////////////////////////////////////////////////////////////
    @OnClick(R.id.button6)
    public void OnClick(View view){
        TextView tvw = (TextView)findViewById(R.id.textView);
        tvw.setText("使用ButterKnife框架绑定实现监听");
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //////////////////内部类//////////////////////////////
        Button btn4 = (Button)findViewById(R.id.button4);
        btn4.setOnClickListener(new MyClickListener1());

        //////////////////外部类//////////////////////////////
        Button btn5 = (Button)findViewById(R.id.button5);
        btn5.setOnClickListener(new MyClickListener2()
        {
            @Override
            public void onClick(View v){
                super.onClick(v);
                TextView tvw = (TextView)findViewById(R.id.textView);
                tvw.setText("使用外部类作为监听器");
            }
        });

        ////////////////进度条////////////////////////////////
        Button btn8 = (Button)findViewById(R.id.button8);
        btn8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showDialog(PROGRESS_DIALOG);
            }
        });

        /////////////////////Activity作为监听器/////////////////////////////////////
        Button btn1 = (Button)findViewById(R.id.button1);
        btn1.setOnClickListener(this);

        /////////////////////匿名内部类做监听器////////////////////////////////////
        Button btn2 = (Button)findViewById(R.id.button2);
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TextView tvw = (TextView)findViewById(R.id.textView);
                tvw.setText("使用匿名内部类作为监听器");
            }
        });
        //////////////////系统信息界面跳转////////////////////////////////////
        Button btn7 = (Button)findViewById(R.id.button7);
        btn7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this,InfoActivity.class);
                startActivity(i);
            }
        });
        ////////////////////////////////ButterKnife////////////////////////////////
        ButterKnife.bind(this);
    }
    ///////////////////////Activity作为监听器/////////////////////////////
    @Override
    public void onClick(View v)
    {
        TextView tvw = (TextView)findViewById(R.id.textView);
        tvw.setText("使用Activity作为监听器");
    }
    ///////////////////////////绑定到标签////////////////////////////////////////////////
    public void clickHandler(View source)
    {
        TextView tvw = (TextView)findViewById(R.id.textView);
        tvw.setText("使用绑定到标签方式实现监听");
    }
    /////////////////进度条对话框////////////////////////////////////////////////////
    @Override
    public Dialog onCreateDialog(int id, Bundle status)
    {
        System.out.println("------create------");
        switch (id)
        {
            case PROGRESS_DIALOG:
                // 创建进度对话框
                pd = new ProgressDialog(this);
                pd.setMax(100);
                // 设置对话框的标题
                pd.setTitle("任务完成百分比");
                // 设置对话框 显示的内容
                pd.setMessage("耗时任务的完成百分比");
                // 设置对话框不能用“取消”按钮关闭
                pd.setCancelable(false);
                // 设置对话框的进度条风格
                pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                // 设置对话框的进度条是否显示进度
                pd.setIndeterminate(false);
                break;

        }
        return pd;
    }
    public int doWork()
    {
        data[hasData++] = (int)(Math.random()*100);
        try
        {
            Thread.sleep(50);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        return hasData;
    }
    @Override
    public void onPrepareDialog(int id, Dialog dialog) {
        System.out.println("------prepare------");
        super.onPrepareDialog(id, dialog);
        switch (id) {
            case PROGRESS_DIALOG:
                // 对话框进度清零
                progressStatus = 0;
                hasData = 0;
                pd.incrementProgressBy(-pd.getProgress());
                new Thread() {
                    public void run() {
                        while (progressStatus < 100) {
                            // 获取耗时操作的完成百分比
                            progressStatus = doWork();
                            // 发送消息到Handler，请补全代码
                            Message message = new Message();
                            message.what = 0x123;
                            handler.sendMessage(message);
                        }
                        // 如果任务已经完成
                        if (progressStatus == 100) {
                            // 关闭对话框
                            TimerTask task = new TimerTask() {
                                @Override
                                public void run() {
                                    pd.dismiss();
                                }
                            };
                            Timer timer = new Timer();
                            timer.schedule(task, 1000);
                        }
                    }
                }.start();
                break;
        }
    }
    ///////////////////////////////////设置内部类///////////////////////////////////////////////
    class MyClickListener1 implements View.OnClickListener
    {
        @Override
        public void onClick(View v) {
            TextView tvw = (TextView)findViewById(R.id.textView);
            tvw.setText("使用内部类作为监听器");
        }
    }
    //////////////////////ButterKnife//////////////////////////////////////

}
class MyClickListener2 implements View.OnClickListener
{
    @Override
    public void onClick(View v) {
    }
}
